// import "dotenv/config";
// import OpenAI from "openai";

// //config 函数会查找项目根目录下的 .env 文件,并将其中定义的环境变量加载到 process.env 对象中
// try {
//   const openai = new OpenAI({
//     //需要在根目录下运行 node text/ai.js
//     // 若没有配置环境变量，请用阿里云百炼API Key将下行替换为：apiKey: "sk-xxx",
//     apiKey: process.env.ALI_API_KEY,
//     baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1",
//   });
//   const completion = await openai.chat.completions.create({
//     model: "qwen-plus", //模型列表：https://help.aliyun.com/zh/model-studio/getting-started/models
//     messages: [
//       {
//         role: "user",
//         content: "请给我推荐一部好看的电影",
//       },
//     ],
//   });
//   //completion 是 API 响应对象
//   console.log(completion.choices[0].message.content);
// } catch (error) {
//   console.log(`错误信息：${error}`);
//   console.log("请参考文档：https://help.aliyun.com/zh/model-studio/developer-reference/error-code");
// }
// controller/ai.js
import "dotenv/config";
import OpenAI from "openai";

const openai = new OpenAI({
  apiKey: process.env.ALI_API_KEY,
  baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1",
});

export const generateQuestionsAI = async (type, count, language) => {
  try {
    let prompt = `请生成 ${count} 道关于${language && language.length > 0 ? language.join('和') : ''}的全是${type}类型（全是！！！不要混着单选和多选）的题目,请严格按照以下的 JSON 格式返回：
    [
      {
        "type": "单选题", // 题目类型：单选题, 多选题, 编程题
        "content": "题目内容",
        "options": ["选项A", "选项B", "选项C", "选项D"], // 选项列表，编程题可为空 选项中不必出现ABCD比如A选项的答案是1，就只需要返回1，而不是A.1,
        "answer": "a", // 单选题为选项字母（小写的a.b.c.d），多选题为数组"["a","b"]"，编程题为代码答案
        "difficulty": "medium", // 难度：easy, medium, hard
        "language": "go" // 可以是单个语言，也可以是多个语言的数组，如["go", "js"]
      }
      // ... 更多题目
    ]`;

    const completion = await openai.chat.completions.create({
      model: "qwen-plus",
      messages: [
        {
          role: "user",
          content: prompt,
        },
      ],
    });

    const rawResponse = completion.choices[0].message.content;
    console.log('Raw AI response:', rawResponse);

    // 尝试解析 JSON
    try {
      const questions = JSON.parse(rawResponse);
      // 可以在这里对生成的题目进行一些验证或后处理
      return { code: 0, message: "success", data: questions };
    } catch (jsonError) {
      console.error('Failed to parse AI response JSON:', rawResponse, jsonError);
      return { code: 1, message: "AI 返回格式错误，请重试", data: null };
    }

  } catch (error) {
    console.error('Error calling AI model:', error);
    return { code: 1, message: error.message || "调用AI接口失败", data: null };
  }
};